import type { Ref } from 'vue'
import type { ElTable } from 'element-plus'

/**
 * 重置表格表单和排序状态
 * @param formData 表单数据的Ref对象
 * @param resetSort 重置排序的函数
 * @param tableRef 表格组件的Ref对象
 */
export const resetTableFormAndSort = <T extends Record<string, unknown>>(
  formData: Ref<T>,
  resetSort: () => void,
  tableRef?: Ref<InstanceType<typeof ElTable> | undefined>
) => {
  // 重置表单数据
  Object.keys(formData.value).forEach((key) => {
    // 双重类型保护：检查key是否存在 + 类型断言
    if (key in formData.value) {
      (formData.value as Record<string, unknown>)[key] = ''
    }
  })

  // 重置排序状态
  resetSort()

  // 重置表格UI排序标识
  tableRef?.value?.clearSort()
}